iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 4
1
Modern Web

大內魔術 Blazor - 誰說前端一定要寫JS系列 第 4

魔術道具 - Razor 指示詞

  • 分享至 

  • xImage
  •  

昨天提到當 @ 後面接著 Razor 保留關鍵字時,它才會轉換成 Razor 特定的標記,而今天就要來介紹第一批的關鍵字,也就是 Razor 指示詞(Directives)。

雖然都沒有特別提到,但第二天會先建舞台的用意,就是有一個環境可以練習道具,可以試著修改裡面的檔案來看每一個道具效果。


@attribute

@attribute 指示詞針對頁面增加屬性。

@attribute [Authorize]

使該頁面增加 [Authorize] 屬性。

@code

@code 指示詞針對頁面增加成員(欄位、屬性和方法)。

@code {
  private int currentCount = 0;
}

使該頁面增加私有數字欄位currentCount,且初始值為0

@function

@functions 指示詞針對頁面增加成員(欄位、屬性和方法)。

疑~怎麼重複了?因為 @code@functions 真的是一樣的作用,為了使程式碼語意更清楚,官方建議加入欄位或屬性使用 @code,而加入方法則使用 @functions

而昨天說的區域函式建議寫在 @function 裡。

@functions{
   private void IncrementCount()
    {
        currentCount++;
    }
}

使該頁面增加私有方法IncrementCount,並與剛剛增加的currentCount欄位互動。

@implements

@implements 指示詞針對頁面加入需實作的介面。

@implements IDisposable

@functions {
    private bool _isDisposed;

    // ...

    public void Dispose() => _isDisposed = true;
}

使該頁面必須實作IDisposable介面的方法。

@inherits

@inherits 指示詞針對頁面加入繼承的父類。

先新增 CustomRazorPage.razor 檔案,並加入內容。

@* CustomRazorPage.razor *@
@code {
    public string CustomText = "嗨嗨,我是米歐。";
}

就可以使用:

@inherits CustomRazorPage

<p>@CustomText</p>

使該頁面能夠使用父類CustomRazorPage內所能存取的成員。

@inject

@inject 指示詞針對頁面注入對應服務。

@inject HttpClient httpClient

使該頁面能夠從 DI 容器中取得HttpClient實體。

後續文章將針對相依性注入詳細介紹。

@layout

@layout 指示詞針對頁面加入版面配置元件。

@layout MainLayout

使該頁面增加MainLayout版面配置。

後續文章將針對版面配置詳細介紹。

@page

@page 指示詞設定頁面路由。

@page "/counter"

使該頁面的進入點為/counter

後續文章將針對路由詳細介紹。

@using

@using 指示詞針對頁面加入其他命名空間的別名。

@using System;

使該頁面能夠直接瀏覽System命名空間。


以上就是第一批魔術道具 Razor 指示詞的所有介紹與用途啦。

感謝大家的閱讀,我們明天見。

參考資料
Razor 語法 - 指示詞


上一篇
魔術道具 - Razor 介紹
下一篇
魔術道具 - Razor 指示詞屬性
系列文
大內魔術 Blazor - 誰說前端一定要寫JS30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言